home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_11_01
/
1101090a
< prev
next >
Wrap
Text File
|
1992-11-08
|
1KB
|
63 lines
/////////////////
// catalog.cpp //
/////////////////
#include "isam.h"
#include <ctype.h>
static struct cat {
char *name;
t_func func;
} Catalog[] = { { "descwrds", descwrds },
{ NULL, NULL } };
///////////////////////
// Catalog utilities //
///////////////////////
int catalog_number (char *name)
{
int i = 0;
while (Catalog[i].name) {
if (!strcmp(nospace(name), Catalog[i].name))
return i;
i++;
}
return -1;
}
t_func cataloged_func(int f)
{
return Catalog[f].func;
}
/////////////////////////
// Cataloged functions //
/////////////////////////
char * descwrds (char *r);
char *descwrds (char *r)
{ // Extracts up to 20 - 7 letter words from desc field.
// The description field starts at posn 37 and goes
// on for 120 characters.
static char keys[141];
int i = 37, j = 0, k = 0;
memset (keys, ' ', 140);
while ((i < 157) && (k < 20)){
while ((ispunct(r[i]) || isspace(r[i])) && i < 157)
i++;
while (!ispunct(r[i]) && !isspace(r[i]) && i < 157
&& j < 7)
keys[(7 * k) + j++] = r[i++];
while (!ispunct(r[i]) && !isspace(r[i]) && i < 157)
i++;
k++;
j = 0;
}
keys[7 * k] = '\0';
return keys;
}